
import CryptoJS from 'crypto-js'
/**
 * @author: ganluhua
 * @time: 2018.02.13
 * @dec: 全局方法，可以定义全局事件
 * @type {String}
 */
// 时间格式化 -- 转成年月日
function crtTimeFtt (val, type) {
  if (val != null) {
    var date = new Date(val)
    var m = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1).toString() : date.getMonth() + 1
    var d = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
    var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
    var f = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
    var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
    if (type === 'yy-mm-dd') {
      return date.getFullYear() + '-' + m + '-' + d
    } else if (type === 'yy-mm-dd hh-mm') {
      return date.getFullYear() + '-' + m + '-' + d + ' ' + h + ':' + f
    } else if (type === 'yy-mm-dd hh-mm-ss') {
      return date.getFullYear() + '-' + m + '-' + d + ' ' + h + ':' + f + ':' + s
    } else if (type === 'yy-mm') {
      return date.getFullYear() + '-' + m
    } else if (type === 'mm-dd') {
      return m + '-' + d
    } else {
      return date.getFullYear() + '-' + m + '-' + d
    }
  } else {
    return '-'
  }
}
// 读取地址栏参数
function getUrlKey (name) {
  return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [''])[1].replace(/\+/g, '%20')) || null
}

/**
 * 通过key 拿 value
 */
function getLabelByKey (list, key) {
  let name = ''
  if (key) {
    name = '应用不存在'
  }
  if (list.length > 0) {
    list.forEach(v => {
      if (v.value === key) {
        name = v.label
      }
    })
  }
  return name
}

/**
 * 驼峰转换下划线
 */
function toLine (name) {
  return name.replace(/([A-Z])/g, '_$1').toLowerCase()
}

function getLabelByValueOfArr(arr, value, objValue, objLabel){
	let res = ""
  if(arr && arr.length){
    arr.forEach(v=>{
      if(v[objValue] == value){
        res = v[objLabel]
      }
    })
  }
	return res
}

/**
 * AES加密方法
 * @param content 要加密的字符串
 * @param secret 密钥
 * @returns {string} 加密结果
 */
export function aesEncrypt(content, secret) {
	let key = CryptoJS.enc.Utf8.parse(secret);
	let srcs = CryptoJS.enc.Utf8.parse(content);
	let encrypted = CryptoJS.AES.encrypt(srcs, key, {
		mode: CryptoJS.mode.ECB,
		padding: CryptoJS.pad.Pkcs7
	});
	return encrypted.toString();
}

/**
 * 解密方法
 * @param encryptStr 密文
 * @param secret 密钥
 * @returns {string} 明文
 */
export function aesDecrypt(encryptStr, secret) {
	let key = CryptoJS.enc.Utf8.parse(secret);
	let decrypt = CryptoJS.AES.decrypt(encryptStr, key, {
		mode: CryptoJS.mode.ECB,
		padding: CryptoJS.pad.Pkcs7
	});
	return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}

export default {
  crtTimeFtt,
  getUrlKey,
  getLabelByKey,
  toLine,
  getLabelByValueOfArr
}
